﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;

namespace KeyloggerProject
{
    class Configuration
    {
        static Configuration thiss=null;
        #region Globalne
        public static bool DebagMode = true;
        public static string NetworkSerwerAdress = "127.0.0.1";
        public static int NetworkSerwerPort = 1000;
        public static string KlientConfigurationLink = "\\KlientKeyloggera\\config.ini";
        public static string SerwerConfigurationLink = "\\Serwer\\config.ini";
        public static string SerwerPosredniConfigurationLink = "\\SerwerPosredni\\config.ini";
        #endregion
        public static KlientConfiguration Klient = KlientConfiguration.Load();
        public static SerwerConfiguration Serwer = SerwerConfiguration.Load();
        public static SerwerPosredniConfiguration SerwerPosredni = SerwerPosredniConfiguration.Load();
        private Configuration() 
        { 
        
        }
        public static Configuration Load()
        {
            if (thiss == null)
            {
                thiss = new Configuration();
            }
            return thiss;
        }
    }
    public class KlientConfiguration
    {
        static KlientConfiguration thiss = null;
        private KlientConfiguration()
        { 
            //ładowanie konfiguracje ale puki co jest wklepana na sztywno
        }
        public static KlientConfiguration Load()
        {
            if (thiss == null)
            {
                thiss = new KlientConfiguration();
            }
            return thiss;
        }
        public string NetworkAddress = "127.0.0.1";//pobierane z interneta
        public int NetworkPort = 10000;//pobieranie z interneta
        public string Login = "admin";
        public string Password = "admin";
        public Guid LicenceKey = Guid.Empty;
        public bool Network = true;//czy klient może się łączyć z serwerem sieciowym
        public bool Lan = true;//czy klient może łączyć się z serwerem po sieci lan
        public bool Ekran = true;//czy klient może otworzyć połączenie sieciowe ekranu
        public bool Video = true;//czy klien może otworzyć połączenie sieciowe kamery
        public bool Czat = true; //czy klient może wykonywać czat z serwerem
        public bool VideoCzat = true;//czy klien może wykonywać czat Video z serwerem
        public bool FileBrowser = true;//czy klien może przeglądać pliki chosta zdalnego?
        public bool Keylogger = true;//czy klien może podglądać jakie klawisze zostały naciśnięte? keylogger?
        public bool Sounds = true;//czy klien może przechwytywać i wysyłać dziwięki 
        public bool CommandLine = true;//czy klient może wysyłać polecenia cmd do serwera
        public bool ConfigurationClient = true;//czy klien może zmieniać własną konfigurację
        public bool ConfigurationSerwer = true;//czy klien może zmieniać konfigurację serwera z którym się łączy

    }
    public class SerwerConfiguration
    {
        static SerwerConfiguration thiss = null;
        private SerwerConfiguration()
        { 
            //ładowanie konfiguracje ale puki co jest wklepana na sztywno
        }
        public static SerwerConfiguration Load()
        {
            if (thiss == null)
            {
                thiss = new SerwerConfiguration();
            }
            return thiss;
        }
        public bool Network = true;//czy serwer ma w ogóle otwierać jakieś porty?
        public bool Lan = true;//czy serwer ma odbierać połączenia po lanie jeśli tak to Network nie powinno być false ale jest wymagane
        public Guid SerwerID=Guid.Empty;//uzyskane po pierwszym logowaniu się do serwera
        public Guid SerwerLicenseKey=Guid.Empty;
        public int LanPort = 2500;
        public bool ConfigurationOnLan = true;
        public bool ConfigurationOnNetwork = true;
        public bool Keylogger = true;
        public bool EMail = false;
        //konfiguracja wysyłki e-maila
        public static bool FTP = false;
        //konfiguracja ftp
    }
    public class SerwerPosredniConfiguration
    { 
        static SerwerPosredniConfiguration thiss = null;
        private SerwerPosredniConfiguration()
        { 
            //ładowanie konfiguracje ale puki co jest wklepana na sztywno
        }
        public static SerwerPosredniConfiguration Load()
        {
            if (thiss == null)
            {
                thiss = new SerwerPosredniConfiguration();
            }
            return thiss;
        }
        public int NetworkPort = 10000;
    }
}
